<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        audio {}
    </style>
</head>

<body>
    <button class="button">点击</button>

    <audio controls src="./[2022]08709704.wav"></audio>
    <audio controls
        src="http://10.19.5.50:11180/api/file/preview?fileId=072fa5ac18ef453fa38d77ea8fd74366&accessToken=f7837058-8917-455f-98f8-af9fc2574aa6"></audio>


    <p>错误的</p>
    <audio controls src="./错误的.wav"></audio>
    <audio controls
        src="http://10.19.5.50:11180/api/file/preview?fileId=b1cf8cd23f6d4fdcaa3d75a0721c8298&accessToken=f7837058-8917-455f-98f8-af9fc2574aa6"></audio>





    <script>
        // 数孩子 三个一数
        // function childNum(num = 30, count = 3) {
        //   let arr = []
        //   for (let i = 0; i < num; i++) {
        //     arr.push(i + 1)
        //   }
        //   let curIndex = 0
        //   let count1 = 0
        //   let gun = 0
        //   while (gun < num - 1) {
        //     if (arr[curIndex] != 0) count1++
        //     if (count1 == count) {
        //       count1 = 0
        //       arr[curIndex] = 0
        //       gun++
        //     }
        //     curIndex++
        //     if (curIndex == num) {
        //       curIndex = 0
        //     }
        //   }
        //   return arr.filter(item => {
        //     return item
        //   })[0]
        // }
        // console.log(childNum(30, 3));

        // 图片的异步加载
        // function down(num) {
        //   return new Promise((resolve, reject) => {
        //     let img = new Image();
        //     if (true) {
        //       resolve(num)
        //     } else {
        //       reject("222")
        //     }
        //   })
        // }
        // down("aaa").then(res => {
        //   console.log(res);
        // })

        // 数组扁平化
        // const arr = [1, [2, [3, [4, 5]]], 6];
        // function bianPinghua(arr, arr1 = []) {
        //   arr.forEach(item => {
        //     if (typeof item == 'object') {
        //       bianPinghua(item, arr1)
        //     } else {
        //       arr1.push(item)
        //     }
        //   })
        //   return arr1
        // }
        // console.log(bianPinghua(arr));

        // 数组去重
        // const arr = [1, 1, '1', 17, true, true, false, false, 'true', 'a', {}, {}];
        // function quchong(arr) {
        //   // 方法1
        //   // let arr1 = []
        //   // arr.forEach(item => {
        //   //   if (arr1.indexOf(item) < 0) {
        //   //     arr1.push(item)
        //   //   }
        //   // })
        //   // return arr1

        //   //方法二
        //   // let arr1 = []
        //   // arr.forEach(item => {
        //   //   if (!arr1.includes(item)) {
        //   //     arr1.push(item)
        //   //   }
        //   // })
        //   // return arr1

        //   //方法三
        //   // let obj = {}
        //   // arr.forEach(item => {
        //   //   obj[item] = 0
        //   // })
        //   // return Object.keys(obj)

        //   //方法思
        //   // return [...new Set(arr)]
        // }
        // console.log(quchong(arr));

        // 实现call apply bind方法
        // Function.prototype.mycall = function (context, ...args) {
        //   let key = Symbol('key')
        //   context.key = this
        //   let res = context.key(...args)
        //   delete context.key
        //   return res
        // }
        // Function.prototype.myapply = function (context, args) {
        //   let key = Symbol('key')
        //   context.key = this
        //   let res = context.key(...args)
        //   delete context.key
        //   return res
        // }
        // Function.prototype.mybind = function (context, ...args) {
        //   let that = this
        //   return function (...args1) {
        //     return that.apply(context, [...args, ...args1])
        //   }
        // }

        // let obj = {
        //   name: 111
        // }

        // function demo(...args) {
        //   console.log(args);
        //   console.log(this.name);
        // }
        // console.log(demo.mybind(obj, 1, 2)(3, 4));

        // 手写防抖节流
        // function demo() {
        //   console.log("111");
        // }

        // let dom = document.querySelector(".button");
        // dom.onclick = fangdou(demo, 1000, true)

        // function fangdou(fn, time, imm) {
        //   let timeout
        //   return function () {
        //     if (timeout) clearTimeout(timeout)
        //     if (imm) {
        //       // 立即执行

        //     } else {
        //       // 非立即执行
        //       let timeout = setTimeout(function () {
        //         fn()
        //       }, time)
        //     }
        //   }
        // }
        // function jieliu() {

        // }



        // class EventEmitter {
        //   constructor() {
        //     this.events = {};
        //   }
        //   // 实现订阅
        //   on(type, callBack) {
        //     if (!this.events[type]) {
        //       this.events[type] = [callBack];
        //     } else {
        //       this.events[type].push(callBack);
        //     }
        //   }
        //   // 删除订阅
        //   off(type, callBack) {
        //     if (!this.events[type]) return;
        //     this.events[type] = this.events[type].filter((item) => {
        //       return item !== callBack;
        //     });
        //   }
        //   // 只执行一次订阅事件
        //   once(type, callBack) {
        //     function fn() {
        //       callBack();
        //       this.off(type, fn);
        //     }
        //     this.on(type, fn);
        //   }
        //   // 触发事件
        //   emit(type, ...rest) {
        //     this.events[type] &&
        //       this.events[type].forEach((fn) => fn.apply(this, rest));
        //   }
        // }



        // 思路

        // 快排
        // 快排
        // function quickSort(arr) {
        //   if (arr.length < 2) return arr
        //   let middle = Math.floor(arr.length / 2)
        //   let middleNum = arr.splice(middle, 1)[0]
        //   console.log(middleNum);
        //   let left = []
        //   let right = []

        //   arr.forEach(item => {
        //     if (item > middleNum) {
        //       right.push(item)
        //     } else {
        //       left.push(item)
        //     }
        //   })
        //   return [...quickSort(left), middleNum, ...quickSort(right)];
        // }
        // console.log(quickSort([3, 6, 2, 4, 1]));

        // let id = 111
        // let obj = {
        //     id: 222,
        //     a: function () {
        //         this.id = 111111
        //         console.log(this.id);
        //     }
        // }
        // console.log(new obj.a());


        // 手写控制扁平化层数
        let arr = [1, 2, 3, 4, [2, 23, 23, [2323, 23, 23]]]
        function bianpinghua(arr) {
            let aaa = false
            // 首先怎么扁平化
            const arr1 = []
            arr.forEach(item => {
                if (Array.isArray(item)) {
                    arr1.concat(...item)
                } else {
                    arr1.push(item)
                }
            })
            arr1.forEach(item => {
                if (Array.isArray(item)) {
                    aaa = true
                }
            })
            debugger
            if (aaa) {
                bianpinghua(arr1)
            }
        }
        bianpinghua(arr)
        console.log(arr);



    </script>
</body>

</html>